import axios from 'axios'
import {store} from "../store/store";
import NProgress from 'nprogress';

const http = axios.create({
    baseURL: process.env.REACT_APP_BASE_URL, // 所有请求的公共地址部分
    timeout: 5000, // 请求超时时间 这里的意思是当请求时间超过5秒还未取得结果时 提示用户请求超时
    responseType: "json",
})


// 请求相关处理 请求拦截 在请求拦截中可以补充请求相关的配置
// interceptors axios的拦截器对象
http.interceptors.request.use(async config => {
    NProgress.start();

    // config 请求的所有信息
    // console.log(config);
    if (store.getState().UserRedux.token) {
        config.headers['Authorization'] = store.getState().UserRedux.token
    }
    return config // 将配置完成的config对象返回出去 如果不返回 请求讲不会进行
}, err => {
    // 请求发生错误时的相关处理 抛出错误
    return Promise.reject(err)
})


http.interceptors.response.use(res => {
    NProgress.done();
    // 我们一般在这里处理，请求成功后的错误状态码 例如状态码是500，404，403
    // res 是所有相应的信息
    if (res.data.status) {
        alert(res.data.message)
    }
    if (res.data) {
        return Promise.resolve(res.data)
    }
}, err => {
    NProgress.done();
    if (err.response) {
        return Promise.reject({
            code: err.response.status,
            message: err.response.statusText
        })
    }
    // 服务器响应发生错误时的处
    // return Promise.reject(err)

})


export default http
